package com.urea.system.service;

import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.urea.system.domain.CustomerAccount;
import com.urea.system.domain.vo.CustomerAccountVo;

/**
 * 客户/车队账户Service接口
 * 
 * @author liuzd
 * @date 2023-08-01
 */
public interface ICustomerAccountService extends IService<CustomerAccount>
{
    /**
     * 查询客户/车队账户
     * 
     * @param id 客户/车队账户主键
     * @return 客户/车队账户
     */
    public CustomerAccount selectCustomerAccountById(Long id);

    /**
     * 查询客户/车队账户列表
     * 
     * @param customerAccount 客户/车队账户
     * @return 客户/车队账户集合
     */
    public List<CustomerAccount> selectCustomerAccountList(CustomerAccount customerAccount);

    /**
     * 新增客户/车队账户
     * 
     * @param customerAccount 客户/车队账户
     * @return 结果
     */
    public int insertCustomerAccount(CustomerAccount customerAccount);

    /**
     * 修改客户/车队账户
     * 
     * @param customerAccount 客户/车队账户
     * @return 结果
     */
    public int updateCustomerAccount(CustomerAccount customerAccount);

    /**
     * 批量删除客户/车队账户
     * 
     * @param ids 需要删除的客户/车队账户主键集合
     * @return 结果
     */
    public int deleteCustomerAccountByIds(Long[] ids);

    /**
     * 删除客户/车队账户信息
     * 
     * @param id 客户/车队账户主键
     * @return 结果
     */
    public int deleteCustomerAccountById(Long id);

    /**
     * 根据id更新账户余额
     * @param newBalance 更新后余额
     * @param id id
     */
    void updateBalanceById(BigDecimal newBalance,Long id);

    /**
     * 根据车队队员用户id 获取车队余额
     * @param userId 队员id
     * @return 余额信息
     */
    CustomerAccountVo getFleetBalanceByUid(Long userId);

    /**
     * customerId 获取账户信息
     * @param customerId
     * @return
     */
    CustomerAccountVo getByCustomerId(Long customerId);

    void updateBlanceByCustomerId(Long customerId, BigDecimal amount,Boolean fleetPay);

    CustomerAccountVo getByCustomerId(Long customerId, Boolean fleetPay);
}
